package com.hsgene.order.persistence;

import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.order.domain.v1.GeneticTestingOrderInterchange;
import com.hsgene.order.dto.peanut.OrderInterchangeListDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 订单变更Repository
 *
 * @author wangbing
 * @version 1.0, 2018/9/29
 */
@Repository
public interface OrderInterchangeRepository {

    /**
     * 查询订单的套餐更换信息
     *
     * @param orderId 订单id
     * @return 订单的套餐更换信息
     */
    GeneticTestingOrderInterchange findInterchangeByOrderId(@Param("orderId") String orderId);

    /**
     * 套餐更换信息数量
     *
     * @param groundServantId 地服id
     * @return 数量
     */
    int queryInterchangeCount(@Param("groundServantId") String groundServantId);

    /**
     * 分页查询
     *
     * @param groundServantId 地服id
     * @param limitHelper     分页参数
     * @return 列表数据
     */
    List<GeneticTestingOrderInterchange> queryInterchanges(
            @Param("groundServantId") String groundServantId,
            @Param("limitHelper") LimitHelper limitHelper);

    /**
     * 分页查询
     *
     * @param groundServantId 地服id
     * @param limitHelper     分页参数
     * @return 列表数据
     */
    List<OrderInterchangeListDto> queryOrderInterChangeListDto(
            @Param("groundServantId") String groundServantId,
            @Param("limitHelper") LimitHelper limitHelper);

    /**
     * 查询订单的套餐更换信息
     *
     * @param id 套餐更换id
     * @return 订单的套餐更换信息
     */
    GeneticTestingOrderInterchange findById(@Param("id") String id);

    /**
     * 根据变更记录编号查询详细变更信息
     *
     * @param recordNo 记录编号
     * @return 详细变更信息
     */
    List<GeneticTestingOrderInterchange> queryByRecordNo(@Param("recordNo") String recordNo);

    /**
     * 地服更新套餐变更信息
     *
     * @param interchange 变更信息
     */
    void update(@Param("interchange") GeneticTestingOrderInterchange interchange);
}
